package com.tom.architect.party5.day37.simple4;

import com.tom.architect.party4.day35.simple2.BaseSubscriber;
import com.tom.architect.party5.day37.simple4.base.BasePresenter;

/**
 * P层: 关联解耦M,V
 */
public class UserInfoPresenter
        extends BasePresenter<UserInfoContract.UserInfoView>
        implements UserInfoContract.UserInfoPresenter {
    // 持有 View 和 Model
//    private UserInfoContract.UserInfoView mView; // 保存在 BasePresenter 里面了。
    private UserInfoContract.UserInfoModel mModel;
    public UserInfoPresenter() {
        this.mModel = new UserInfoModel();
    }

    // 解绑view，加了这个逻辑后，代码越来越多了。代码冗余了，
    // 1.很多代码是公用反复的，attach，detach 每个Presenter都要有。
    // 2.Activity-View, attach detach 的每个View层也要有。
//    public void attach(UserInfoContract.UserInfoView view) {
//        this.mView = view; // 绑定view }
//    public void detach() {
//        this.mView = null; // 解绑view }

    @Override
    public void getUsers(String token) {
        // RxJava + OkHttp + Retrofit 或 网络引擎 或okhttp
        // 拿到数据
        // 显示正在加载中。
        getView().onLoading();
        mModel.getUsers(token).subscribe(new BaseSubscriber<UserInfo>() {
            @Override
            protected void onError(String errorCode, String errorMessage) {
                if (getView() != null) // 每次判断，很麻烦
                    getView().onError();
            }

            @Override
            public void onNext(UserInfo userInfo) {
                if (getView() != null)
                    getView().onSucceed(userInfo);
            }
        });
    }

}
